-------------------------------------------------------------------------------
-- Title      : 8x8 ASCII char map for VGA display
-- Project    : 
-------------------------------------------------------------------------------
-- File       : charMap.vhd
-- Author     : Paul W
-- Company    : 
-- Created    : 2012-11-29
-- Last update: 2012-12-12
-- Platform   : 
-- Standard   : VHDL'93
-------------------------------------------------------------------------------
-- Description: Rom for storing common ASCII in 8x8 pixel blocks. This set is
--              monochrome. User must implement color options.
-------------------------------------------------------------------------------
-- Copyright (c) 2012 
-------------------------------------------------------------------------------
-- Revisions  :
-- Date        Version  Author  Description
-- 2012-11-29  1.0      paul	Created
-------------------------------------------------------------------------------

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity charMap is
  
  port (
    in_charAddr : in  std_logic_vector(7 downto 0);
    out_char    : out std_logic_vector(0 to 63));

end entity charMap;

architecture behave of charMap is

  type charRom is array (0 to 255) of std_logic_vector(0 to 63);  -- 16384
                                                                  -- bits

  signal rom : charRom := (             -- hex
   "0000000000000000000000000000000000000000000000000000000000000000",  -- 00
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",  -- 1F (31)
   "0000000000000000000000000000000000000000000000000000000000000000",  -- 20 SPC
   "0001100000011000000110000001100000011000000000000001100000011000",  -- 21 !
   "0011001101100110010001000000000000000000000000000000000000000000",  -- 22 "
   "0000000000010010111111110010010000100100111111110100100000000000",  -- 23 #
   "0001100000011111001110000101100000111100000110101111110000011000",  -- 24 $
   "0010000001010110001001000000110000110000001001000110101000000100",  -- 25 %
   "0001110001100000011000000110000000110000110010100110011000011001",  -- 26 &
   "0001100000011000000110000000000000000000000000000000000000000000",  -- 27 '
   "0000100000110000110000001100000011000000001100000001100000000100",  -- 28 (
   "0001000000001100000000110000001100000011000001100000110000010000",  -- 29 )
   "0000000000011000000110000111111000011000001001000010010000000000",  -- 2A *
   "0000000000011000000110000111111001111110000110000001100000000000",  -- 2B +
   "0000000000000000000000000000000000000000000110000001100000100000",  -- 2C ,
   "0000000000000000000000000111111001111110000000000000000000000000",  -- 2D -
   "0000000000000000000000000000000000000000000000000001100000011000",  -- 2E .
   "0000000100000011000001000000110000011000001000001100000010000000",  -- 2F /
   "0001100001100110110000111101101111011011110000110110011000011000",  -- 30 0
   "0001100001111000000110000001100000011000000110000001100001111110",  -- 31 1
   "0011110001100110011001100000011000001100000110000011000001111110",  -- 32 2
   "0011110001100110000001100001110000011100000001100110011000111100",  -- 33 3
   "0000111000011110001101100110011011111111000001100000011000000110",  -- 34 4
   "0111111001100000011000000111110000000110000001100110011001111100",  -- 35 5
   "0001111000110000011000001111111011100111111001110110011000111100",  -- 36 6
   "1111111111111111000001100000110000011000001100000110000011000000",  -- 37 7
   "0011110001100110011001100011110000111100011001100110011000111100",  -- 38 8
   "0011110001100110111001111110011100111111000001100000110001111000",  -- 39 9
   "0000000000000000000110000001100000000000000110000001100000000000",  -- 3A :  
   "0000000000011000000110000000000000000000000110000001100000110000",  -- 3B ;
   "0000000000000011001111001100000011000100001111000000001100000000",  -- 3C <
   "0000000001111110011111100000000000000000011111100111111000000000",  -- 3D =
   "0000000011000000001111000000001100000011001111001100000000000000",  -- 3E >
   "0011110011100111000000110000111000011000000000000001100000011000",  -- 3F ?
   "0011110001110011110011111101001111010011110011111110000000111100",  -- 40 @
   "0001100000011000001001000010010001111110011111101100001111000011",  -- 41 A
   "1111110011000011110000111111111011111110110000111100001111111100",  -- 42 B
   "0001111101110000110000001100000011000000110000000111000000011111",  -- 43 C
   "1111110011000110110000111100001111000011110000111100011011111100",  -- 44 D
   "1111111111111111110000001111111111111111110000001111111111111111",  -- 45 E
   "1111111111111111110000001111110011111100110000001100000011000000",  -- 46 F
   "0011111101100000110000001100111111001111110000110110001100111100",  -- 47 G
   "0110011001100110011001100111111001111110011001100110011001100110",  -- 48 H
   "1111111111111111000110000001100000011000000110001111111111111111",  -- 49 I
   "0111111101111111000000110000001100000011110000111110011100111100",  -- 4A J
   "1100001111000110110011001111100011111000110011001100011011000011",  -- 4B K
   "1100000011000000110000001100000011000000110000001111111111111111",  -- 4C L
   "0110011001100110011001101101101111011011110000111100001111000011",  -- 4D M
   "1100001111100011110100111101101111011011110010111100011111000011",  -- 4E N
   "0011110001100110110000111100001111000011110000110110011000111100",  -- 4F O
   "1111110011111110110000111100001111111110111111001100000011000000",  -- 50 P
   "0011110001100110110000111100001111000011110011110110011000111101",  -- 51 Q
   "1111110011000110110000111100001111111110110011001100011011000011",  -- 52 R
   "0011111111111111110000000111110000111110000000111111111111111100",  -- 53 S
   "1111111111111111000110000001100000011000000110000001100000011000",  -- 54 T
   "1100001111000011110000111100001111000011110000110111111000111100",  -- 55 U
   "1100001111000011110000110110011001100110011001100010010000011000",  -- 56 V
   "1100001111000011110110111101101101111110011001100110011001100110",  -- 57 W
   "1100001111000011001111000001100000011000001111001100001111000011",  -- 58 X
   "1100001111000011011001100011110000011000000110000001100000011000",  -- 59 Y
   "1111111111111111000000110000110000110000110000001111111111111111",  -- 5A Z
   "1111000011110000110000001100000011000000110000001111000011110000",  -- 5B [
   "0000000011000000011000000011000000011000000011000000011000000011",  -- 5C \
   "0000111000001111000000110000001100000011000000110000111100001111",  -- 5D ]
   "0001100001100110110000110000000000000000000000000000000000000000",  -- 5E ^
   "0000000000000000000000000000000000000000000000000000000011111111",  -- 5F _
   "1100000001100000001100000000000000000000000000000000000000000000",  -- 60 `
   "0000000000011100011111110000001101111111111001111110011100111101",  -- 61 a
   "0000000000000000110000001100000011111100110001101100011011111100",  -- 62 b
   "0000000000000000000111100111111001100000011000000111111000011110",  -- 63 c
   "0000001100000011001111110011111101100011011000110111111100111101",  -- 64 d
   "0000000000000000011111101110011111111111111000000110001100111110",  -- 65 e
   "0000111000011011000110000111111001111110000110000001100000011000",  -- 66 f
   "0001111100111111011000110110001100111111000111111100001101111110",  -- 67 g
   "1100000011000000110000001111110011111110110000111100001111000011",  -- 68 h
   "0001100000011000000000000011100000011000000110000001100000111100",  -- 69 i
   "0000110000001100000000000000110000001100000011001100110001111000",  -- 6A j
   "1100000011000000110001101100110011011000111100001101100011001100",  -- 6B k
   "0111100000011000000110000001100000011000000110000001101100011110",  -- 6C l
   "0000000000000000000000001011011011110111110110111101101111011011",  -- 6D m
   "0000000000000000000000000101111001111111011000110110001101100011",  -- 6E n
   "0000000000000000001111000111111001100110011001100111111000111100",  -- 6F o
   "0001100011111100111001101110011011111100110110001100000011000000",  -- 70 p
   "0001100000111111011001110110011100111111000110110000001100000011",  -- 71 q
   "0000000000000000110111101111111111000011110000001100000011000000",  -- 72 r
   "0000000000000000000000000111111111000000011111100000001111111110",  -- 73 s
   "0000000000011000001111000011110000011000000110000001101100011111",  -- 74 t
   "0000000000000000011000110110001101100011011000110111111100111101",  -- 75 u
   "0000000000000000000000001100001111000011011001100011110000011000",  -- 76 v
   "0000000000000000000000001100001111011011110110111101101101100110",  -- 77 w
   "0000000000000000110000111110011100011000000110001110011111000011",  -- 78 x
   "0000000001100011011000110011001100011110000011000000110000011000",  -- 79 y
   "0000000001111110011111100000110000011000001100000111111001111110",  -- 7A z
   "0001100000110000001100001110000011100000001100000011000000011000",  -- 7B {
   "0001100000011000000110000001100000011000000110000001100000011000",  -- 7C |
   "0001100000001100000011000000011100000111000011000000110000011000",  -- 7D }
   "0000000000000000000000000111001111011100000000000000000000000000",  -- 7E ~
   "0000000000000000000000000000000000000000000000000000000000000000",  -- 7F DEL
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000",
   "0000000000000000000000000000000000000000000000000000000000000000");
      
begin  -- architecture behave

  out_char <= rom(to_integer(unsigned(in_charAddr)));

end architecture behave;
